Computer software creation is a multi-stage process. Computer software is initially written as source code. The source code can be written in a computer language such as C, C++ or similar high level computer language. While these high level computer languages are generally comprehended by human programmers, computers are generally unable to execute programs written in such high level computer languages. The source code is converted into a computer executable language, sometimes referred to as an assembly language or processor instruction set. This conversion process is referred to as compilation, which is carried out by a computer program referred to as a “compiler.”
In some computer systems, multiple-processors or similar parallel processing resources are available. The source code can be organized or marked by a programmer to be executed in parallel by the multiple-processors or processing resources. The programmers can identify sections of the source code that are capable of parallel execution based on the relative independence in the operation of these source code sections. However, the identification of such parallelism by programmers can be inexact and inconsistent. As a result, the compilation of the source code for execution on multiple-processors can be sub-optimal.
The use of multiple-processors, multi-core processors and similar devices continues to grow. This has become an important aspect of improving the processing power of computers and similar devices. Thus, improving identification of parallelism in the source code and the compilation of the source code to exploit the parallelism is crucial to the proper utilization of the expanding power of these processing devices.